<?php

/**
 * propiedad actions.
 *
 * @package    inmobiliaria
 * @subpackage propiedad
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class propiedadActions extends sfActions
{

public function executeFiltro(sfWebRequest $request)
  {

	  $this->form = new sfForm();	
	  $this->form->setWidgets(array(
    		'tipoprop' => new sfWidgetFormChoice(array('choices' => array('Subject A', 'Subject B', 'Subject C'))),
   		'tipoop' => new sfWidgetFormChoice(array('choices' => array('Subject A', 'Subject B', 'Subject C'))),
//    $this->tipoprop = Doctrine_Core::getTable('TipoPropiedad')

	  ));

  }

  public function executeIndex(sfWebRequest $request)
  {

    $this->form = new BuscarPropForm();	
    

    $preciomin = $request->getParameter('precioMin');
    $preciomax = $request->getParameter('precioMax');
    $tipoprop = $request->getParameter('tipoprop');
    $tipoop = $request->getParameter('tipoop');


    //obtenemos usuarios y cantidad de propiedades de cada uno
   
//    $result = $qusuarios->execute();

    //filtramos los que unicamente tienen más de una propiedad
  /*  $qusuariosf = Doctrine_Query::create()
	  ->select('u.id as id')
	  ->from('SfGuardUser u,Propiedad p')
//	  ->leftJoin('u.id p')
	  ->where('u.id=p.sf_guard_user_id')
	  ->groupBy('u.id')
	  ->having('COUNT(p.id) > 2');

	  
    $usuarios = $qusuariosf->execute();   */   

    //$maxuser=2;

    //$this->propiedads = Doctrine_Core::getTable('Propiedad')
    //->createQuery('a')
    $q = Doctrine_Query::create()
    ->from('Propiedad prop');
    $qusuariosf = $q->createSubquery()
          ->select('u.id')
	  ->from('Perfil u,Propiedad p')
	  ->where('u.id=p.perfil_id')
	  ->groupBy('u.id')
	  ->having('COUNT(p.id) > 1');


    $q->where('precio>'.$preciomin.' AND precio<'.$preciomax.' AND tipo_propiedad_id='.$tipoprop.' AND tipo_operacion_id='.$tipoop.' AND perfil_id IN ('.
$qusuariosf->getDql().')');
//    ->execute();
      $this->propiedads=$q->execute();
    $this->filtro = new PropiedadFormFilter();

  }

 public function executePropiedades(sfWebRequest $request)
  {
    if ($this->getUser()->isAuthenticated()){
    $idcliente=$this->getUser()->getGuardUser()->getId();
    }else{
    $idcliente=-1;
    }
    $this->propiedads = Doctrine_Core::getTable('Propiedad')
    ->createQuery('a')
    ->where('perfil_id='.$idcliente)
    ->execute();
    $this->filtro = new PropiedadFormFilter();

    //$this->propiedads = Doctrine_Core::getTable('Propiedad')
      //->createQuery('a')
      //->execute();
  }

  public function executeHome(sfWebRequest $request)
  {

  }



  public function executeFilter(sfWebRequest $request)
  {
    $this->filtro = new PropiedadFormFilter();
    $this->consulta = $this->filtro->buildQuery($request->getParameter('query'));
    $this->jobeet_job_list = $this->consulta->execute();
    $this->setTemplate('index');
  }

  public function executeShow(sfWebRequest $request)
  {
    $this->propiedad = Doctrine_Core::getTable('Propiedad')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->propiedad);
  }

  public function executeNew(sfWebRequest $request)
  {
    $propiedad = new Propiedad();
    $propiedad->setPerfil(Doctrine_Core::getTable('Perfil')->find(array($this->getUser()->getId())));
    $this->form = new PropiedadForm($propiedad);
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->form = new PropiedadForm();
    $this->processForm($request, $this->form);
    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $propiedad = Doctrine_Core::getTable('Propiedad')->find(array($request->getParameter('id')));
    $this->forward404Unless($propiedad, sprintf('Object propiedad does not exist (%s).', $request->getParameter('id')));
    $this->form = new PropiedadForm($propiedad);
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $propiedad = Doctrine_Core::getTable('Propiedad')->find(array($request->getParameter('id')));
    $this->forward404Unless($propiedad, sprintf('Object propiedad does not exist (%s).', $request->getParameter('id')));
    $this->form = new PropiedadForm($propiedad);
    $this->processForm($request, $this->form);
    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($propiedad = Doctrine_Core::getTable('Propiedad')->find(array($request->getParameter('id'))), sprintf('Object propiedad does not exist (%s).', $request->getParameter('id')));
    $propiedad->delete();

    $this->redirect('propiedad/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $propiedad = $form->save();

      $this->redirect('propiedad/edit?id='.$propiedad->getId());
    }
  }
}
